package com.principle.lishitihuan;

/**
 * 里氏替换原则，要求子类不要重写父类的方法，
 *
 * 出现的问题：
 * 别人重写了method方法但是我不知道导致调用错误，下意识认为和父类一样是作差
 */
public class LiskovSubstitution {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("11-3="+a.method1(11,3));
        System.out.println("1-8="+a.method1(1,8));

        System.out.println("--------------------------");
        //B类已经吧父类的方法重写了，但是我下意识认为没有重写，
        // 认为子类B的method1还是做减法
        B  b =new B();
        System.out.println("11-3="+b.method1(11,3)); //别人重写了method方法但是我不知道导致调用错误
        System.out.println("1-8="+b.method1(1,8));
        System.out.println("11+3+9="+b.method2(11,3));

    }
}


class A {
    public int method1(int a , int b ){
        return a-b;
    }
}

//子类修改了父类的方法，但是我不知道，我还以为没有修改呢
class B extends A{
    @Override
    public int method1(int a, int b) {
        return  a+b;
    }

    public int method2(int a , int b ){
        return method1(a,b) +9 ;
    }
}
